import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'

// https://vitejs.dev/config/
export default defineConfig({
  publicDir: "public", // 公共文件路径，里面的所有内容会被直接复制到编译输出的根目录
  base: "", //baseURL
  plugins: [
    vue(),
  ],
  server: {
    https: false, //【后续新版vite有更改】(使用https)启用 TLS + HTTP/2。注意：当 server.proxy 选项 也被使用时，将会仅使用 TLS
    host: true, // 监听所有地址
    port: 5173, //指定开发服务器端口
    open: false, //启动时自动在浏览器中打开
    cors: true, //为开发服务器配置 CORS
    strictPort: true, // 若端口被占用,直接结束项目
    proxy: {  //配置自定义代理规则
      '/example1': 'http://127.0.0.1:7777',  // 字符串简写写法
      '/example2': {
        target: 'http://127.0.0.1:8888',
        changeOrigin: true, //是否跨域
        rewrite: path => path.replace(/^\/api/, '')
      }
    }
  },
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  build: {
    target: "es2020",  //指定es版本,浏览器的兼容性
    outDir: "dist",  //指定打包输出路径
    assetsDir: "static",  //指定静态资源存放路径
    cssCodeSplit: true, //css代码拆分,禁用则所有样式保存在一个css里面
    sourcemap: false, //是否构建source map 文件
    //minify: 'terser', //需要npm install terser
    //terserOptions: {  //需要npm install terser
    //  compress: {
    //    drop_console: true, //编译移除console
    //    drop_debugger: true,  //编译移除debugger
    //  },
    //},
    rollupOptions: {
      input: {  //配置多页面
        index: path.resolve(process.cwd(), 'index.html'),
      },
      /*output: { //压缩最小输出(ISSUES：不生效0)
        chunkFileNames: 'assets/js/[name]-[hash].js',
        entryFileNames: 'assets/js/[name]-[hash].js',
        assetFileNames: 'assets/static/[name]-[hash].[ext]',
        manualChunks(id) {
          if (id.includes('node_modules')) {
            return id.toString().split('node_modules/')[1].split('/')[0].toString();
          }
        }
      },*/
    },
  },
})
